package com.zw.pdm.module.craft.mapper;

import com.zw.pdm.entity.com.DsnTaskCommon;
import com.zw.pdm.entity.craft.*;
import com.zw.pdm.entity.designtask.DsnGant;
import com.zw.pdm.entity.designtask.DsnProStruct;
import com.zw.pdm.entity.est.Card;
import com.zw.pdm.entity.rep.Result;
import com.zw.pdm.entity.rep.Sheet;
import com.zw.pdm.entity.sys.Role;
import com.zw.pdm.module.craft.model.CraProQueryModel;
import com.zw.pdm.module.craft.model.CraQueryModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description:
 * @Author: China.sgl
 * @Date: 2020/8/8 13:28
 */
public interface CraftProQueryMapper {


    /**
     * 提报计划查询 列表查询
     */
    List<CraProQueryModel> selectPro(CraProQueryModel craProQueryModel);

    /**
     * 通过ID查询项目信息
     *
     * @param proId
     * @return
     */
    CraProQueryModel selectProqueryById(Integer proId);

    /**
     * 根据项目ID查询工艺卡主表
     * @param proId
     * @return
     */
    List<CraMakeSheet> selectCraMakeSheetByProId(Integer proId);

    /**
     * 查询工艺卡主表
     * @param craMakeSheet
     * @return
     */
    List<CraMakeSheet> selectCraMakeSheetByProIdAndspecialId(CraMakeSheet craMakeSheet);

    /**
     * 查询工艺卡
     * @param sheetId
     * @return
     */
    List<Card> selectCraCardSheetBysheetId(Integer sheetId);

    /**
     * 通过主键查询工艺主表
     * @param id
     * @return
     */
    List<CraMakeSheet> selectCraCardSheetById(Integer id);

    /**
     * 查询提报计划
     * @param sheet
     * @return
     */
    List<Sheet> selectRepResultBysheetId(Sheet sheet);

    /**
     * 修改工艺任务状态
     * @param dsnTaskCommon
     * @return
     */
    Integer updateTastCommonStatus(DsnTaskCommon dsnTaskCommon);

    /**
     * 根据项目编号，部分，专业查询 工艺主单
     * @param craMakeSheet
     * @return
     */

    List<CraMakeSheet> selectCraCardSheetByD(CraMakeSheet craMakeSheet);
    /**
     * 根据条件查询部分
     *
     * @param proId
     * @return
     */
    List<DsnProStruct> findProStructByProId(Integer proId);

    /**
     * 提报计划输出表
     * @param result
     * @return
     */
    List<Result> findResultByQuery(Result result);

    /**
     * 接收列表改
     * @param craQueryModel
     * @return
     */
    List<CraQueryModel> selectProDetail(CraQueryModel craQueryModel);

    /**
     * 查询多项目看板，按照部分查看
     * @param craQueryModel
     * @return
     */
    List<CraQueryModel> selectProDetailByPart(CraQueryModel craQueryModel);

    /**
     * 按项目id 查询 CraQueryModel对象
     * @param proId
     * @return
     */
    List<CraQueryModel> selectProDetailByProId(Integer proId);

    /**
     * 查询成本信息输出 明细 （根据项目号 和 任务名称Id 查询）
     * @param dsnTaskCommon
     * @return
     */
    List<DsnTaskCommon> selectdsnTaskCommonByProIdAndComTaskNameId(DsnTaskCommon dsnTaskCommon);

    /**
     * 修改cra_task_detail表成本信息输出状态 （根据项目ID）
     * @param dsnTaskCommon
     * @return
     */
    int updateCraTaskDetail(DsnTaskCommon dsnTaskCommon);

    /**
     * 修改DsnTaskCommon表成本信息输出状态 （根据项目ID）
     * @param dsnTaskCommon
     * @return
     */
    int updateDsnTaskCommon(DsnTaskCommon dsnTaskCommon);

    /**
     * 更新除成本信息输出 状态明细
     * @param dsnTaskCommon
     * @return
     */
    int editCraTaskDetail(DsnTaskCommon dsnTaskCommon);

    /**
     * 根据项目号查询CraTaskDetail
     * @param proId
     * @return
     */

    List<CraTaskDetail> selectCraTaskDetailByProId(Integer proId);

    /**
     * 查询项目分配了几个科室
     * @param proId
     * @return
     */

    List<CraReleaseDetail> selectCraMakeSheetSetionNameByProId(Integer proId);
    /**
     * 所长用户角色
     *
     * @param userId
     * @return
     */
    List<Role> findUserRoleByUserId(Integer userId);
    /**
     * 根据项目编号和登入人员获取项目计划
     *
     * @param proCode
     * @param createCode
     * @param deptId
     * @return
     */
    List<CraGant> findGantListByProCodeAndCreateCode(@Param("proCode") String proCode, @Param("createCode") String createCode, @Param("deptId") Integer deptId);
    /**
     * 删除明细
     *
     * @param id
     * @return
     */
    int delCraGant(Integer id);
    /**
     * 根据条件查询分配任务
     *
     * @param craGant
     * @return
     */
    List<CraGant> findDsnGantByQuery(CraGant craGant);
}
